package com.ylbh.modules.userclass.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ylbh.common.pojo.business.dto.CashWithdrawalDTO;
import com.ylbh.common.pojo.business.vo.BusinessInformationExcelVO;
import com.ylbh.common.pojo.business.vo.CashWithdrawalDetailsVO;
import com.ylbh.common.pojo.business.vo.CashWithdrawalListVO;
import com.ylbh.common.pojo.icon.dto.AddIconDTO;
import com.ylbh.common.pojo.icon.dto.IconDTO;
import com.ylbh.common.pojo.icon.vo.IconDetailsVO;
import com.ylbh.common.pojo.icon.vo.IconImgVO;
import com.ylbh.common.pojo.icon.vo.IconListVO;
import com.ylbh.common.pojo.userclass.dto.BusinessInformationDTO;
import com.ylbh.common.pojo.userclass.dto.UpdateBusinessInformationDTO;
import com.ylbh.common.pojo.userclass.vo.BusinessClassListVO;
import com.ylbh.common.pojo.userclass.vo.BusinessDetailsVO;
import com.ylbh.common.pojo.userclass.vo.BusinessInformationVO;
import com.ylbh.modules.userclass.entity.ShoppingUserClass;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 联盟商家用户分类信息表
 *
 * @author ${author}
 * @email ${email}
 * @date 2019-04-19 14:38:31
 */
@Mapper
@Repository
public interface ShoppingUserClassMapper extends BaseMapper<ShoppingUserClass> {

    /**
     * 联盟商家用户分类信息列表
     * @param page
     * @return
     */
    List<ShoppingUserClass> selectClassification(Page page);

    /**
     * 根据id查看详情
     * @param id
     * @return
     */
    String selectClassNameById(Long id);

    /**
     * 根据id修改分类信息
     * @param id
     * @param className
     */
    void updateByIds(Long id,String className);

    /**
     * 根据id来删除分类
     * @param id
     */
    void deleteByIds(String id);

    /**
     * 新增分类
     * @param className
     */
    void insertClass(String className, Date date);

    /**
     * 联盟店信息管理列表
     * @param informationListList
     * @param page
     * @return
     */
    List<BusinessInformationVO> selectBusinessInformation(BusinessInformationDTO informationListList, Page page);

    /**
     * 根据id查看联盟店信息管理详情信息
     * @param id
     * @return
     */
    BusinessDetailsVO selectBusinessInformationById(Long id);

    /**
     * 根据id修改联盟店信息管理详情信息
     * @param updateByIdOrInformationDTO
     */
    void updateClassName(@Param(value = "updateByIdOrInformationDTO") UpdateBusinessInformationDTO updateByIdOrInformationDTO);

    /**
     * 导出联盟店信息管理
     * @return
     */
    List<BusinessInformationExcelVO> selectBusinessInformationExcel(@Param(value = "keywords") String keywords, @Param(value = "userType") String userType);

    /**
     * 联盟商家用户分类信息
     * @return
     */
    List<BusinessClassListVO> selectBusinessClassList();

    /**
     * 联盟店提现列表
     * @param cashWithdrawalDTO
     * @param page
     * @return
     */
    List<CashWithdrawalListVO> selectBusinessCashWithdrawal(@Param(value = "cashWithdrawalDTO") CashWithdrawalDTO cashWithdrawalDTO, Page page);

    /**
     * 根据id查看联盟店提现详情
     * @param id
     * @return
     */
    CashWithdrawalDetailsVO selectByIdOrCashWithdrawal(@Param("id") Long id);

    /**
     * icon图标管理列表
     * @param page
     * @return
     */
    List<IconListVO> selectIconList(Page page);

    /**
     * 根据商品分类中的IconAccId来查询icon图标
     * @param id
     * @return
     */
    IconImgVO selectIconImg(Long id);

    /**
     * icon图标详情
     * @param id
     * @return
     */
    IconDetailsVO selectIconById(@Param(value = "id")Long id);

    /**
     * 根据id修改icon的标题信息
     * @param iconDTO
     */
    void updateIconDetails(@Param(value = "iconDTO") IconDTO iconDTO);

    /**
     * 根据id修改icon的图标
     * @param updateIconDTO
     */
    void updateIcon(@Param(value = "updateIconDTO")IconDTO updateIconDTO);

    /**
     * 新增icon图标并返回id
     * @param addIconDTO
     * @return
     */
    Integer insertIcon(@Param(value = "addIconDTO") AddIconDTO addIconDTO);

    /**
     * 新增金刚位
     */
    void insertIconClass(@Param(value = "iconDTO") IconDTO iconDTO);
}
